package com.afdor.rws.event;

import com.afdor.rws.annotation.extension.SPI;
import lombok.NonNull;

/**
 * 事件源管理器
 *
 * @author 悭梵
 * @date Created in 2018-08-14 14:58
 */
@SPI("default")
public interface EventSourceManager {

    /**
     * 添加事件源配置信息
     *
     * @param eventSource
     * @param <T>
     * @return
     */
    <T extends EventSourceManager> T addEventSource(@NonNull EventSource eventSource);

    /**
     * 获取事件源配置信息
     *
     * @param eventSourceName
     * @param <T>
     * @return
     */
    <T extends EventSource> T getEventSource(@NonNull String eventSourceName);


    /**
     * 初始化
     *
     * @return
     */
    EventSourceManager init();

    /**
     * 销毁
     */
    void destroy();
}
